package tp

import (
	"aifuture.cloud/request/tp"
	tp2 "aifuture.cloud/response/tp"
	"fmt"
)

type TpMock struct {
}

func (t *TpMock) Detail(id int) (error, interface{}) {
	var data =  make(map[string]interface{})
	data["tp_id"] = id
	data["image_over"] = "https://www.lanboai.cn/gateway/system/images/734484704cf9433f8f48a1309d7e0221.png"
	data["title"] = "YOLOv8和Cityscapes图像分割及评估方法优化"
	data["desc"] = "YOLOv8和Cityscapes图像分割及评估方法优化"
	data["course_jiangzuo_info"] = map[string]interface{}{
		"jiangzuo_id":id,
		"tearcher":"深兰教育",
		"catetory_name":"实训项目",
		"catetory_id":1,
	}
	data["detail"] = map[string]interface{}{
		"markdowndata":`项目名称：基于YOLOv8和Cityscapes数据集的图像分割及评估方法优化

## 项目背景与目标

随着计算机视觉领域的快速发展，图像分割技术在智能交通、自动驾驶等领域中具有广泛的应用前景。YOLOv8作为一种高效的目标检测算法，具有较强的实时性和准确性。本项目旨在研究基于YOLOv8和Cityscapes数据集的图像分割方法及其评估方法的优化，以提高模型在图像分割任务上的性能。

## 实践内容

1. 学习YOLOv8模型原理，熟悉其网络结构及损失函数。
   - 了解YOLOv8模型的基本原理和思想。
   - 熟悉YOLOv8的网络结构和损失函数的设计。

2. 掌握图像分割任务的概念、应用场景以及评估指标。
   - 学习图像分割任务的基本概念和应用领域。
   - 了解常用的图像分割评估指标，如IoU（Intersection over Union）。

3. 配置YOLOv8模型的开发环境，运行基本实例进行训练和测试。
   - 搭建YOLOv8的开发环境，包括安装相关的深度学习框架和依赖项。
   - 运行基本实例，了解YOLOv8模型的训练和测试流程。

4. 在Cityscapes数据集上运行YOLOv8，实现基础的图像分割任务。
   - 深入了解Cityscapes数据集的构成、标注方式及使用方法。
   - 准备和预处理Cityscapes数据集，使其适配YOLOv8模型输入格式。
   - 使用Cityscapes数据集训练和测试YOLOv8模型，分析模型性能。

5. 修改YOLOv8的模型结构或者优化评估方法以提升模型的表现。
   - 调研其他图像分割模型的优势和创新点，尝试将其融入YOLOv8模型。
   - 优化现有评估方法，提升模型在Cityscapes数据集上的性能。

6. 验证优化后的YOLOv8模型在其他数据集（如Mapillary Vistas、COCO等）上的泛化能力。
   - 将优化后的YOLOv8模型在其他数据集上进行测试和评估，验证其泛化能力。`,
	}
	return nil,data
}

func NewTpMock() *TpMock {
	return &TpMock{}
}

func (t *TpMock) makeTpResponse(req *tp.TpReq) []*tp2.TpResponse {
	//根据 tag 查询数据库 查询出对应的数据列表
	//返回默认的列表信息
	return []*tp2.TpResponse{
		{
			Id: 1,
			ImageCovr:         "",
			Title:             "OLOv8和Cityscapes图像分割及评估方法优化",
			LearningFrequency: 2167,
			Cycle:             45,
			PeriodUnit:        tp2.PerionUnitDefault,
			LearnUrl:          "https://www.lanboai.cn/list/onSale/1689310150647595010",
			Tag:               req.Tag,
		},
		{
			Id: 2,
			ImageCovr:         "",
			Title:             "OLOv8和Cityscapes图像分割及评估方法优化",
			LearningFrequency: 2167,
			Cycle:             45,
			PeriodUnit:        tp2.PerionUnitDefault,
			LearnUrl:          "https://www.lanboai.cn/list/onSale/1689310150647595010",
			Tag:               req.Tag,
		},
		{
			Id: 3,
			ImageCovr:         "",
			Title:             "OLOv8和Cityscapes图像分割及评估方法优化",
			LearningFrequency: 2167,
			Cycle:             45,
			PeriodUnit:        tp2.PerionUnitDefault,
			LearnUrl:          "https://www.lanboai.cn/list/onSale/1689310150647595010",
			Tag:               req.Tag,
		},
		{
			Id: 4,
			ImageCovr:         "",
			Title:             "OLOv8和Cityscapes图像分割及评估方法优化",
			LearningFrequency: 2167,
			Cycle:             45,
			PeriodUnit:        tp2.PerionUnitDefault,
			LearnUrl:          "https://www.lanboai.cn/list/onSale/1689310150647595010",
			Tag:               req.Tag,
		},
	}
}
func (t *TpMock) List(req *tp.TpReq) (error, []*tp2.TpResponse) {
	fmt.Println(req.Tag)
	return nil, t.makeTpResponse(req)
}
func (t *TpMock) TagList() (error, tp2.TagList) {
	return nil, tp2.TagList{&tp2.TagReponse{
		Name:  "自助辅助驾驶",
		Value: 1,
	}, &tp2.TagReponse{
		Name:  "智能机器人",
		Value: 2,
	}, &tp2.TagReponse{
		Name:  "工业智能",
		Value: 3,
	}, &tp2.TagReponse{
		Name:  "I医疗",
		Value: 4,
	}}
}
